<!DOCTYPE html>
<html lang="en-us" dir="ltr" itemscope itemtype="http://schema.org/Article" data-r-output-format="html">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0">
    <meta name="generator" content="Hugo 0.147.3">
    <meta name="generator" content="Relearn 8.2.0+220806ce3ced8264fbdd693f77f28216a8a1b6ae">
    <meta name="description" content="Written for gokrazy The following third-party programs specifically target gokrazy.
To get your program listed here, just send us a pull request.
scan2drive scan2drive is an appliance (with a web interface) that scans paper documents 📄 from a scanner 🖨️ as PDFs to Google Drive for full-text search.">
    <meta name="author" content="">
    <meta name="twitter:card" content="summary">
    <meta name="twitter:title" content="Showcase :: gokrazy">
    <meta name="twitter:description" content="Written for gokrazy The following third-party programs specifically target gokrazy.
To get your program listed here, just send us a pull request.
scan2drive scan2drive is an appliance (with a web interface) that scans paper documents 📄 from a scanner 🖨️ as PDFs to Google Drive for full-text search.">
    <meta property="og:url" content="https://gokrazy.org/packages/showcase/index.html">
    <meta property="og:site_name" content="gokrazy">
    <meta property="og:title" content="Showcase :: gokrazy">
    <meta property="og:description" content="Written for gokrazy The following third-party programs specifically target gokrazy.
To get your program listed here, just send us a pull request.
scan2drive scan2drive is an appliance (with a web interface) that scans paper documents 📄 from a scanner 🖨️ as PDFs to Google Drive for full-text search.">
    <meta property="og:locale" content="en_us">
    <meta property="og:type" content="article">
    <meta property="article:section" content="Available packages">
    <meta itemprop="name" content="Showcase :: gokrazy">
    <meta itemprop="description" content="Written for gokrazy The following third-party programs specifically target gokrazy.
To get your program listed here, just send us a pull request.
scan2drive scan2drive is an appliance (with a web interface) that scans paper documents 📄 from a scanner 🖨️ as PDFs to Google Drive for full-text search.">
    <meta itemprop="wordCount" content="435">
    <title>Showcase :: gokrazy</title>
    <link href="/images/favicon.png?1763621646" rel="icon" type="image/png">
    <link href="/css/auto-complete/auto-complete.min.css?1763621646" rel="stylesheet">
    <script src="/js/auto-complete/auto-complete.min.js?1763621646" defer></script>
    <script src="/js/search-lunr.min.js?1763621646" defer></script>
    <script src="/js/search.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.index_js_url="/searchindex.en.js?1763621646";
    </script>
    <script src="/js/lunr/lunr.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.stemmer.support.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.multi.min.js?1763621646" defer></script>
    <script src="/js/lunr/lunr.en.min.js?1763621646" defer></script>
    <script>
      window.relearn = window.relearn || {};
      window.relearn.contentLangs=['en'];
    </script>
    <link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet" media="print" onload="this.media='all';this.onload=null;"><noscript><link href="/fonts/fontawesome/css/fontawesome-all.min.css?1763621646" rel="stylesheet"></noscript>
    <link href="/css/perfect-scrollbar/perfect-scrollbar.min.css?1763621646" rel="stylesheet">
    <link href="/css/theme.min.css?1763621646" rel="stylesheet">
    <link href="/css/format-html.min.css?1763621646" rel="stylesheet" id="R-format-style">
    <script>
      window.relearn = window.relearn || {};
      // configuration
      window.relearn.min = `.min`;
      window.relearn.path='\/packages\/showcase\/index.html';
      window.relearn.relBasePath='..\/..';
      window.relearn.relBaseUri='..\/..';
      window.relearn.absBaseUri='https:\/\/gokrazy.org';
      window.relearn.disableInlineCopyToClipboard=true;
      window.relearn.enableBlockCodeWrap=true;
      // legal
      window.relearn.getItem = (s,n) => {return s.getItem(n)};
      window.relearn.setItem = (s,n,v) => {return s.setItem(n,v)};
      window.relearn.removeItem = (s,n) => {return s.removeItem(n)};
      // translations
      window.T_Copy_to_clipboard = `Copy text to clipboard`;
      window.T_Copied_to_clipboard = `Text copied to clipboard!`;
      window.T_Link_copied_to_clipboard = `Link copied to clipboard!`;
      window.T_Reset_view = `Reset view`;
      window.T_View_reset = `View reset!`;
      window.T_No_results_found = `No results found for "{0}"`;
      window.T_N_results_found = `{1} results found for "{0}"`;
      window.T_Browser_unsupported_feature = `This browser doesn't support this feature`;
      // variant stuff
      window.relearn.themevariants = [ 'auto' ];
      window.relearn.customvariantname = "my-custom-variant";
      window.relearn.changeVariant = function(variant) {
        var oldVariant = document.documentElement.dataset.rThemeVariant;
        window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        document.documentElement.dataset.rThemeVariant = variant;
        if (oldVariant != variant) {
          document.dispatchEvent( new CustomEvent('themeVariantLoaded', { detail: { variant, oldVariant } }) );
          window.relearn.markVariant();
        }
      }
      window.relearn.markVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant");
        document.querySelectorAll(".R-variantswitcher select").forEach((select) => {select.value = variant;});
      }
      window.relearn.initVariant = function() {
        var variant = window.relearn.getItem(window.localStorage, window.relearn.absBaseUri + "/variant") ?? "";
        if( variant == window.relearn.customvariantname ){
        }else if( !variant || !window.relearn.themevariants.includes(variant) ){
          variant = window.relearn.themevariants[0];
          window.relearn.setItem(window.localStorage, window.relearn.absBaseUri + "/variant", variant);
        }
        document.documentElement.dataset.rThemeVariant = variant;
      }
      window.relearn.initVariant();
      window.relearn.markVariant();
    </script>
  </head>
  <body class="mobile-support html" data-url="/packages/showcase/index.html">
    <div id="R-body" class="default-animation">
      <div id="R-body-overlay"></div>
      <nav id="R-topbar">
        <div class="topbar-wrapper">
          <div class="topbar-sidebar-divider"></div>
          <div class="topbar-area topbar-area-start" data-area="start">
            <div class="topbar-button topbar-button-sidebar" data-content-empty="disable" data-width-s="show" data-width-m="hide" data-width-l="hide">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleNav()" type="button" title="Menu (CTRL&#43;ALT&#43;n)"><i class="fa-fw fas fa-bars"></i></button></span>
            </div>
            <div class="topbar-button topbar-button-toc" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="Table of Contents (CTRL&#43;ALT&#43;t)"><i class="fa-fw fas fa-list-alt"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
<nav class="TableOfContents">
  <ul>
    <li><a href="#written-for-gokrazy">Written for gokrazy</a>
      <ul>
        <li><a href="#scan2drive">scan2drive</a></li>
        <li><a href="#router7">router7</a></li>
        <li><a href="#hmgo">hmgo</a></li>
        <li><a href="#beatbox">beatbox</a></li>
        <li><a href="#consrv">consrv</a></li>
        <li><a href="#krazyotelcol">krazyotelcol</a></li>
        <li><a href="#restics-rest-server">Restic&rsquo;s rest-server</a></li>
        <li><a href="#waiw">waiw</a></li>
        <li><a href="#the-relax-switch">The relax switch</a></li>
      </ul>
    </li>
    <li><a href="#successfully-tested">Successfully tested</a>
      <ul>
        <li><a href="#prometheus">Prometheus</a></li>
        <li><a href="#grafana">Grafana</a></li>
        <li><a href="#minio">MinIO</a></li>
      </ul>
    </li>
    <li><a href="#no-go-software-for-your-idea">No Go software for your idea?</a></li>
  </ul>
</nav>
                </div>
              </div>
            </div>
          </div>
          <ol class="topbar-breadcrumbs breadcrumbs highlightable" itemscope itemtype="http://schema.org/BreadcrumbList"><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/index.html"><span itemprop="name">gokrazy Go appliances</span></a><meta itemprop="position" content="1">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><a itemprop="item" href="/packages/index.html"><span itemprop="name">Available packages</span></a><meta itemprop="position" content="2">&nbsp;>&nbsp;</li><li itemscope itemtype="https://schema.org/ListItem" itemprop="itemListElement" class=""><span itemprop="name">Showcase</span><meta itemprop="position" content="3"></li>
          </ol>
          <div class="topbar-area topbar-area-end" data-area="end">
            <div class="topbar-button topbar-button-edit" data-content-empty="disable" data-width-s="area-more" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><a href="https://github.com/gokrazy/gokrazy/tree/master/website/content/packages/showcase.markdown" rel="external" title="Edit (CTRL+ALT+w)"><i class="fa-fw fas fa-pen"></i></a></span>
            </div>
            <div class="topbar-button topbar-button-more" data-content-empty="hide" data-width-s="show" data-width-m="show" data-width-l="show">
<span class="btn cstyle button link noborder notitle interactive"><button onclick="toggleTopbarFlyout(this)" type="button" title="More"><i class="fa-fw fas fa-ellipsis-v"></i></button></span>
              <div class="topbar-content">
                <div class="topbar-content-wrapper">
                  <div class="topbar-area topbar-area-more" data-area="more">
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </nav>
      <div id="R-main-overlay"></div>
      <main id="R-body-inner" class="highlightable packages" tabindex="-1">
        <div class="flex-block-wrapper">
<article class="default">
  <header class="headline">
  </header>

<h1 id="showcase">Showcase</h1>

<h2 id="written-for-gokrazy">Written for gokrazy<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>The following third-party programs specifically target gokrazy.</p>
<p>To get your program listed here, just <a
href="https://github.com/gokrazy/gokrazy">send us a pull request</a>.</p>
<h3 id="scan2drive">scan2drive<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/stapelberg/scan2drive" rel="external"><strong>scan2drive</strong></a> is an appliance (with
a web interface) that scans paper documents 📄 from a scanner 🖨️ as PDFs to
Google Drive for full-text search.</p>
<h3 id="router7">router7<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/rtr7/router7" rel="external"><strong>router7</strong></a> is a small home internet router
completely written in Go.</p>
<h3 id="hmgo">hmgo<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/stapelberg/hmgo" rel="external"><strong>hmgo</strong></a> is a minimal HomeMatic house
automation central control unit replacement (specific to <a
href="https://github.com/stapelberg">stapelberg</a>’s home network).</p>
<h3 id="beatbox">beatbox<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/anisse/beatbox" rel="external"><strong>beatbox</strong></a> is a Raspberry Pi 3-based toy
that combines a Mir:ror and NFC figurines for playing music stored on the device
or directly from Spotify.</p>
<h3 id="consrv">consrv<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/mdlayher/consrv" rel="external"><strong>consrv</strong></a> is a Raspberry Pi 4-based
appliance that provides a basic SSH to serial console bridge for accessing
remote devices.</p>
<h3 id="krazyotelcol">krazyotelcol<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/svrnm/krazyotelcol" rel="external"><strong>krazyotelcol</strong></a> is an appliance
running the <a href="https://github.com/open-telemetry/opentelemetry-collector" rel="external">OpenTelemetry
Collector</a>, a
vendor-agnostic implementation on how to receive, process and export telemetry
data.</p>
<h3 id="restics-rest-server">Restic&rsquo;s rest-server<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/restic/rest-server" rel="external"><strong>Rest Server</strong></a> is a high performance
HTTP server that implements restic&rsquo;s REST backend API. Running it requires some
setup and other configurations which are available in
<a href="https://dcpri.me/2022/08/31/restic-rest-server-gokrazy/" rel="external">this blog post</a>.</p>
<h3 id="waiw">waiw<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/BrunoTeixeira1996/waiw" rel="external"><strong>waiw</strong></a> is a Go webserver to store
movies/series/animes ratings and comments. Running it requires some setup but the
README describes every step to make it work.</p>
<h3 id="the-relax-switch">The relax switch<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://github.com/drio/relaxswitch" rel="external">The relax switch</a> is a gokrazy appliance
to enhance your bathroom experience. A friend of mine had a hilarious idea:
having a dedicated switch in your bathroom that, when switched, would play a
90s relaxing song. The original prototype ran on top of Raspbian OS, but
gokrazy is a much better fit for this project. You wire a smart relay to your
switch. The switch talks MQTT. When the person turns on the switch, the service
running on the Pi plays a 90s relaxing song. When they turn off the switch the
music go off. Simple and relaxing.</p>
<h2 id="successfully-tested">Successfully tested<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>The following third-party programs have been successfully used with gokrazy
but might require additional setup:</p>
<h3 id="prometheus">Prometheus<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://prometheus.io/" rel="external"><strong>Prometheus</strong></a> is a monitoring and alerting system
built on a time series database.</p>
<p>The <a href="https://github.com/prometheus/node_exporter" rel="external"><strong>Prometheus node exporter</strong></a>
exposes various metrics of the system on which it is running for use with the <a
href="https://prometheus.io">prometheus</a> monitoring and alerting system.</p>
<p>The <a href="https://github.com/prometheus/blackbox_exporter" rel="external"><strong>Prometheus blackbox
exporter</strong></a> allows blackbox
probing of endpoints over HTTP, HTTPS, DNS, TCP and ICMP for use with the <a
href="https://prometheus.io">prometheus</a> monitoring and alerting system.</p>
<h3 id="grafana">Grafana<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://grafana.com/" rel="external"><strong>Grafana</strong></a> is an open platform for beautiful analytics
and monitoring.</p>
<h3 id="minio">MinIO<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h3>
<p><a href="https://min.io/" rel="external"><strong>MinIO</strong></a> is a high performance, S3-compatible, cloud native
object storage service.</p>
<p>See also <a href="/packages/minio/index.html">Available packages → MinIO</a>.</p>
<h2 id="no-go-software-for-your-idea">No Go software for your idea?<span class="btn cstyle anchor copyanchor scrollanchor link noborder notitle interactive"><button type="button" title="Copy link to clipboard"><i class="fa-fw fas fa-link fa-lg"></i></button></span></h2>
<p>You can prototype your idea by temporarily using existing software to close the
gap. See <a href="/prototyping/">Prototyping</a>.</p>

  <footer class="footline">
  </footer>
</article>
        </div>
      </main>
    </div>
    <aside id="R-sidebar" class="default-animation">
      <div id="R-header-topbar" class="default-animation"></div>
      <div id="R-header-wrapper" class="default-animation">
        <div id="R-header" class="default-animation">
<img src="/logo.svg" width="100%" alt="gokrazy logo" title="gokrazy logo">

        </div>
        <search><form action="/search/index.html" method="get">
          <div class="searchbox default-animation">
            <button class="search-detail" type="submit" title="Search (CTRL+ALT+f)"><i class="fas fa-search"></i></button>
            <label class="a11y-only" for="R-search-by">Search</label>
            <input data-search-input id="R-search-by" name="search-by" class="search-by" type="search" placeholder="Search...">
            <button class="search-clear" type="button" data-search-clear="" title="Clear search"><i class="fas fa-times" title="Clear search"></i></button>
          </div>
        </form></search>
      </div>
      <div id="R-homelinks" class="default-animation homelinks">
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-homelinks">
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="/index.html"><a class="padding" href="/index.html"><i class="fa-fw fas fa-home"></i> Home</a></li>
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-headercontrols">
          <ul class="">
          </ul>
        </div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
      </div>
      <div id="R-content-wrapper" class="highlightable">
        <div class="R-sidebarmenu R-shortcutmenu-main">
          <ul class="enlarge morespace collapsible-menu">
            <li class="" data-nav-url="/quickstart/index.html"><a class="padding" href="/quickstart/index.html"><b>1. </b>Quickstart</a></li>
            <li class="" data-nav-url="/platforms/index.html"><a class="padding" href="/platforms/index.html"><b>2. </b>Supported platforms</a></li>
            <li class="" data-nav-url="/userguide/index.html"><a class="padding" href="/userguide/index.html"><b>3. </b>Configuration</a><ul id="R-subsections-74b4df3a3d9365853f09e9f1dfe7bbba" class="collapsible-menu"></ul></li>
            <li class="parent " data-nav-url="/packages/index.html"><a class="padding" href="/packages/index.html"><b>4. </b>Available packages</a><ul id="R-subsections-bdf1e8ce92aa8ff6883c617f10480430" class="collapsible-menu">
            <li class="active " data-nav-url="/packages/showcase/index.html"><a class="padding" href="/packages/showcase/index.html">Showcase</a></li>
            <li class="" data-nav-url="/packages/tailscale/index.html"><a class="padding" href="/packages/tailscale/index.html">Tailscale VPN</a></li>
            <li class="" data-nav-url="/packages/caddy-http-server/index.html"><a class="padding" href="/packages/caddy-http-server/index.html">Caddy HTTP server</a></li>
            <li class="" data-nav-url="/packages/minio/index.html"><a class="padding" href="/packages/minio/index.html">MinIO object storage</a></li>
            <li class="" data-nav-url="/packages/docker-containers/index.html"><a class="padding" href="/packages/docker-containers/index.html">Docker containers</a></li>
            <li class="" data-nav-url="/packages/prometheus/index.html"><a class="padding" href="/packages/prometheus/index.html">Prometheus</a></li></ul></li>
            <li class="" data-nav-url="/development/index.html"><a class="padding" href="/development/index.html"><b>5. </b>Package development</a><ul id="R-subsections-54b0ce3c97b111c8cd4d107325fd580c" class="collapsible-menu"></ul></li>
          </ul>
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-shortcuts">
          <div class="nav-title padding">More</div>
          <ul class="space collapsible-menu">
            <li class="" data-nav-url="https://github.com/gokrazy/gokrazy"><a class="padding" href="https://github.com/gokrazy/gokrazy" rel="external"><i class='fab fa-github'></i> GitHub repo</a></li>
          </ul>
        </div>
        <div id="R-footer-margin"></div>
        <div class="R-menu-divider default-animation">
          <hr class="padding">
        </div>
        <div class="R-sidebarmenu R-shortcutmenu-footercontrols">
          <ul class="">
          </ul>
        </div>
<div id="R-footer"><p>Built with <a href="https://github.com/McShelby/hugo-theme-relearn" title="love"><i class="fas fa-heart"></i></a> by <a href="https://gohugo.io/">Hugo</a></p></div>
      </div>
    </aside>
    <script src="/js/perfect-scrollbar/perfect-scrollbar.min.js?1763621646" defer></script>
    <script src="/js/theme.min.js?1763621646" defer></script>
    <div id="toast-container" role="status" aria-live="polite" aria-atomic="false"></div>
  </body>
</html>
